
package com.trolls.client;


import com.google.gwt.user.client.ui.Composite;

/**
 * Classe Abstraite utile pour 
 * faire défiler les items
 */
public abstract class Gallery extends Composite {
	
/////////////////////VARIABLES GLOBALES///////////////////////////////////////////////////////////
	// Nb d'images à afficher dans la gallery
	protected int NB_ITEM_MAX = 5;
	protected int NB_ITEM = 5;

	// Pointeur de position du curseur
	protected int position = 0;
	protected int positionSelected = 0;
	
	



	//////////////////////////////////////CONSTRUCTEUR////////////////////////////////////////////////
	public Gallery( int nb_item_max, int nb_item){
		this.NB_ITEM_MAX = nb_item_max;
		this.NB_ITEM = nb_item;
	}
	
/////////////////////FONCTION DE DEPLACEMENT Vers l'item suivant/////////////////////////////
	/**
	 * Retourne la position precedente
	 * @return int position
	 */
	protected int precedent() {
		if (this.position <= 0) {
			position = NB_ITEM - 1;
		} else {
			position--;
		}
		return position;

	}
	
	/**
	 * Retourne la position suivante
	 * @return int position
	 */
	protected int getSuivant() {
		if (position == NB_ITEM - 1) {
			position = 0;
		} else { 
			position++;
		}
		return position;
	}
	
	/**
	 * Retourne la position courante
	 * @return int position
	 */
	public int getPosition() {
		return this.position;
	}

	/**
	 * Remise a zero du pointeur d'image si l'on a parcouru toute la galerie via Precedent
	 */
	public void InitPrecedent() {
		// remet le pointeur position en place pour gérer l'affichage des 4
		// photos:
		// exemple : si on en est au bloc de photo [0,1,2,3] -> return 28
		// Utilisé 4 fois, getSuivant() peut ensuite afficher les images
		// [29,0,1,2]
		for (int i = 0; i < NB_ITEM_MAX + 1; i++) {
			precedent();
		}
	}

	/**
	 * Remise a zero du pointeur d'image si l'on a parcouru toute la galerie via Suivant
	 */
	public void InitSuivant() {
		for (int i = 0; i < (NB_ITEM_MAX - 1); i++) {
			precedent();
		}
	}
/////////////////////FONCTION Pour le selecteur/////////////////////////////
	public int getPositionSelected() {
		return positionSelected;
	}

	public void setPositionSelected(int positionSelected) {
		this.positionSelected = positionSelected;
	}
	int getNumSelectedWidget(){
		if(getPositionSelected()<(getPosition()-NB_ITEM_MAX+1) &&getPositionSelected()>NB_ITEM_MAX){
			return -1;
		}else{
			return (getPositionSelected()-(getPosition()-NB_ITEM_MAX+1))%NB_ITEM_MAX;

		}
	}

}
